// cjLog.h: interface for the cjLog class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_CJLOG_H__AC8EA3CD_B9A5_4A2D_BF74_2A2AE602C28C__INCLUDED_)
#define AFX_CJLOG_H__AC8EA3CD_B9A5_4A2D_BF74_2A2AE602C28C__INCLUDED_

// The following ifdef block is the standard way of creating macros which make exporting 
// from a DLL simpler. All files within this DLL are compiled with the LOGGER_EXPORTS
// symbol defined on the command line. this symbol should not be defined on any project
// that uses this DLL. This way any other project whose source files include this file see 
// LOGGER_API functions as being imported from a DLL, wheras this DLL sees symbols
// defined with this macro as being exported.

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#ifdef LOGGER_EXPORTS
#define LOGGER_API __declspec(dllexport)
#else
#define LOGGER_API __declspec(dllimport)
#endif

#ifdef __cplusplus
// This class is exported from the Logger.dll
class LOGGER_API cjLog  
{
public:
	virtual ~cjLog();

	static cjLog& instance();
	
	virtual void info(char*,...) = 0;//write string to buffer
	virtual void debug(char*,...) = 0;//write string to buffer in debug mode
	virtual void callstacktrace(int ndepth) = 0;//dump call stack

protected:
	cjLog();

};
#endif

/************************************************************************/
/* for C compatiable                                                    */
/************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
	void LOGGER_API cjLog_info(char*,...);
#ifdef __cpluspus
};
#endif

#endif // !defined(AFX_CJLOG_H__AC8EA3CD_B9A5_4A2D_BF74_2A2AE602C28C__INCLUDED_)
